package tokens

import (
	"strconv"
	"svntool/db/tables"
	"time"

	"github.com/astaxie/beego/orm"
)

/**
 * 令牌管理
 */
type token struct {
	uid   int
	token string
}

func (t *token) buildtoken() {
	if t.token == "" {
		token := string(strconv.FormatInt(time.Now().UTC().Unix(), 10))
		t.token = token
	}
}

/**
 * 生成令牌
 */
func (t *token) Create() (tables.Tokens, string) {
	t.buildtoken()
	tokens := tables.Tokens{Token: t.token}
	go func() {
		o := orm.NewOrm()
		o.Insert(&tokens)
	}()
	return tokens, t.token
}

/**
 * 更新令牌
 */
func (t *token) Update(tokens tables.Tokens) string {
	t.buildtoken()
	go func() {
		tokens.Token = t.token
		o := orm.NewOrm()
		o.Update(&tokens)
	}()
	return t.token
}

/**
 * 删除令牌
 */
func (t *token) Delete(tokens tables.Tokens) {
	go func() {
		o := orm.NewOrm()
		tokens.Token = ""
		o.Update(&tokens)
	}()
}
